package mx.ipn.pruebas;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

import mx.ipn.negocios.*;
import mx.ipn.to.*;
import mx.ipn.Constantes;

public class pruebaServicioNegocios {
	static RPCServiceClient serviceClient = null;
	
	public static void inicializar() throws AxisFault{
		serviceClient = new RPCServiceClient();
		Options options = serviceClient.getOptions();

		EndpointReference targetEPR = new EndpointReference(Constantes.URL_SERVICIOS_NEGOCIOS);
		
		options.setTo(targetEPR);
		options.setProperty(org.apache.axis2.addressing.AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
	}
	
	public static Object invocaServicio(String servicio, Object argumentos, Class tipoRespuesta){
		QName operacion = new QName(Constantes.URI_SERVICIOS, servicio);
		
		Object[] opArgumentos = new Object[] { argumentos };
		Class[] opTipoRespuesta = new Class[] { tipoRespuesta };
		
		Object[] respuesta = null;
		
		try{
			respuesta = serviceClient.invokeBlocking(operacion,
				opArgumentos, opTipoRespuesta);
		}catch(AxisFault e){ e.printStackTrace(); }
		
		return respuesta[0];
	}
	
	public static void main(String args[]){
		try{
			inicializar();
		}catch(AxisFault a){a.printStackTrace();}
		
		UsuarioTO usuarioTO = new UsuarioTO();
		
		usuarioTO.setNombreUsuario("contra1");
		usuarioTO.setContrasenia("pass1");
		
		UsuarioTO usuarioTOResp = (UsuarioTO) invocaServicio("login", usuarioTO, UsuarioTO.class);
		
		if(usuarioTO==null){
			System.out.println("Nulo! :(");
			return;
		}
		
		System.out.println("Nombre: "+usuarioTOResp.getNombreUsuario());
		System.out.println("Contrasenia: " + usuarioTOResp.getContrasenia());
		System.out.println("Activo: " + usuarioTOResp.getActivo());
		
		
		ClienteTO clienteTO[];
		
	    clienteTO = (ClienteTO[]) invocaServicio("obtenerClientesPorTelefono", "56049160", ClienteTO[].class);
	    
	    for(int x = 0; x <clienteTO.length;x++ )
	    {
	    	ImprimirTO.Imprime(clienteTO[x]);
	    }
		
		/*try{
			ConexionConPersistencia.inicializar();
			ConexionConPersistencia.iniciarFabricaDAOS(Constantes.FABRICA_DAOS_MYSQL);
		}catch(AxisFault e){
			e.printStackTrace();
			return;
		}
		
		UsuarioTO usuarioTO = new UsuarioTO();
		
		usuarioTO.setNombreUsuario("contra1");
		usuarioTO.setContrasenia("pass1");
		
		// El servicio de login
		UsuarioTO resp = Login.validarLogin(usuarioTO);
		
		if(resp!=null)
		System.out.println(resp.getNombreUsuario());*/
	}
	
}
